Date এবং Time Functions (ডেট এবং টাইম ফাংশনস)

Computer Programming - সি স্ট্যান্ডার্ড লাইব্রেরি রেফারেন্স (C Standard Library Reference)
278
278

Date এবং Time Functions (ডেট এবং টাইম ফাংশনস)

সি প্রোগ্রামিং ভাষায় ডেট এবং টাইম ফাংশনগুলো ব্যবহার করে বর্তমান সময় ও তারিখ সংগ্রহ করা, ফরম্যাট করা এবং প্রোগ্রামে সময় হিসাব করা যায়। এই ফাংশনগুলো সি স্ট্যান্ডার্ড লাইব্রেরির time.h হেডার ফাইলের অন্তর্গত। এই ফাংশনগুলোর মাধ্যমে প্রোগ্রামের কার্যকাল ট্র্যাক করা এবং সময় সম্পর্কিত বিভিন্ন কাজ করা সহজ হয়।

নিচে সি ভাষায় ব্যবহৃত গুরুত্বপূর্ণ ডেট এবং টাইম ফাংশনগুলো এবং তাদের কাজ সম্পর্কে আলোচনা করা হলো:


১. time() – বর্তমান সময় সংগ্রহ

time() ফাংশনটি বর্তমান সময়কে Unix Epoch Time (1 জানুয়ারি 1970 থেকে শুরু করে সেকেন্ড হিসেবে গৃহীত) রিটার্ন করে। এটি বর্তমান সময়ের সেকেন্ড প্রদান করে।

সিঙ্কট্যাক্স:

time_t time(time_t *timer);

উদাহরণ:

#include <stdio.h>
#include <time.h>

int main() {
    time_t current_time;
    current_time = time(NULL);  // বর্তমান সময় সংগ্রহ

    printf("Current time: %ld\n", current_time);
    return 0;
}

২. ctime() – বর্তমান সময়কে স্ট্রিংয়ে রূপান্তর

ctime() ফাংশনটি time() ফাংশনের আউটপুট (Unix time) কে স্ট্রিং ফরম্যাটে রূপান্তর করে এবং একটি পাঠযোগ্য টাইম স্ট্রিং রিটার্ন করে।

সিঙ্কট্যাক্স:

char *ctime(const time_t *timer);

উদাহরণ:

#include <stdio.h>
#include <time.h>

int main() {
    time_t current_time;
    time(¤t_time);

    printf("Current time: %s", ctime(¤t_time));
    return 0;
}

Output Example: Current time: Thu Nov 4 18:22:48 2021


৩. localtime() – স্থানীয় সময়ে রূপান্তর

localtime() ফাংশনটি time() ফাংশনের আউটপুটকে স্থানীয় সময়ে রূপান্তর করে এবং একটি tm স্ট্রাকচার প্রদান করে, যাতে বছর, মাস, দিন, ঘন্টা, মিনিট, এবং সেকেন্ড আলাদাভাবে পাওয়া যায়।

সিঙ্কট্যাক্স:

struct tm *localtime(const time_t *timer);

উদাহরণ:

#include <stdio.h>
#include <time.h>

int main() {
    time_t current_time;
    struct tm *local;

    time(¤t_time);
    local = localtime(¤t_time);

    printf("Year: %d\n", local->tm_year + 1900);  // 1900 যোগ করা হয়
    printf("Month: %d\n", local->tm_mon + 1);     // 0 থেকে শুরু হয়
    printf("Day: %d\n", local->tm_mday);
    printf("Hour: %d\n", local->tm_hour);
    printf("Minute: %d\n", local->tm_min);
    printf("Second: %d\n", local->tm_sec);

    return 0;
}

৪. strftime() – সময় এবং তারিখ ফরম্যাট করা

strftime() ফাংশনটি একটি সময়/তারিখ স্ট্রাকচার (tm) থেকে বিভিন্ন ফরম্যাটে সময় ও তারিখ প্রদর্শন করতে ব্যবহৃত হয়।

সিঙ্কট্যাক্স:

size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr);

উদাহরণ:

#include <stdio.h>
#include <time.h>

int main() {
    time_t current_time;
    struct tm *local;
    char buffer[80];

    time(¤t_time);
    local = localtime(¤t_time);

    strftime(buffer, sizeof(buffer), "Date: %d-%m-%Y, Time: %H:%M:%S", local);
    printf("%s\n", buffer);

    return 0;
}

Output Example: Date: 04-11-2021, Time: 18:25:35


৫. difftime() – সময়ের পার্থক্য নির্ধারণ

difftime() ফাংশনটি দুটি সময়ের মধ্যে পার্থক্য নির্ধারণ করতে ব্যবহৃত হয়। এটি দুটি time_t টাইপের সময় গ্রহণ করে এবং তাদের মধ্যে পার্থক্য সেকেন্ডে রিটার্ন করে।

সিঙ্কট্যাক্স:

double difftime(time_t end, time_t start);

উদাহরণ:

#include <stdio.h>
#include <time.h>

int main() {
    time_t start_time, end_time;

    time(&start_time);
    // কিছু সময়ের জন্য অপেক্ষা
    sleep(2);  // 2 সেকেন্ড অপেক্ষা

    time(&end_time);
    double diff = difftime(end_time, start_time);

    printf("Time difference: %.0f seconds\n", diff);
    return 0;
}

৬. mktime()tm স্ট্রাকচারকে time_t এ রূপান্তর

mktime() ফাংশনটি tm স্ট্রাকচারকে time_t টাইপের ডেটা টাইপে রূপান্তর করে। এটি সাধারণত স্থানীয় সময়কে Unix time (সেকেন্ডে) রূপান্তরের জন্য ব্যবহৃত হয়।

সিঙ্কট্যাক্স:

time_t mktime(struct tm *timeptr);

উদাহরণ:

#include <stdio.h>
#include <time.h>

int main() {
    struct tm time_info = {0};

    time_info.tm_year = 2021 - 1900;  // বছর নির্ধারণ
    time_info.tm_mon = 10;            // মাস নির্ধারণ (0 - 11)
    time_info.tm_mday = 4;            // দিন নির্ধারণ

    time_t epoch_time = mktime(&time_info);
    printf("Epoch time: %ld\n", epoch_time);

    return 0;
}

tm স্ট্রাকচার ফিল্ড

struct tm টাইম স্ট্রাকচারে কয়েকটি ফিল্ড রয়েছে, যা স্থানীয় সময়ের বিভিন্ন উপাদান সংরক্ষণ করে।

ফিল্ডবর্ণনা
tm_yearবছর (1900 থেকে শুরু)
tm_monমাস (0 = জানুয়ারি, 11 = ডিসেম্বর)
tm_mdayমাসের দিন (1 - 31)
tm_hourঘণ্টা (0 - 23)
tm_minমিনিট (0 - 59)
tm_secসেকেন্ড (0 - 59)
tm_wdayসপ্তাহের দিন (0 = রবিবার)
tm_ydayবছরের দিন (0 - 365)
tm_isdstডে লাইট সেভিং টাইম নির্দেশক

সারসংক্ষেপ

ফাংশনকাজ
time()বর্তমান সময় সংগ্রহ (Unix time)
ctime()Unix time কে স্ট্রিংয়ে রূপান্তর
localtime()Unix time কে স্থানীয় সময়ে রূপান্তর
strftime()সময় ও তারিখ ফরম্যাট করা
difftime()দুটি সময়ের মধ্যে পার্থক্য নির্ধারণ
mktime()tm স্ট্রাকচারকে time_t এ রূপান্তর

সি প্রোগ্রামে ডেট এবং টাইম ফাংশনগুলো ব্যবহার করে বর্তমান সময় সংগ্রহ, প্রদর্শন এবং সময়ের মধ্যে পার্থক্য নির্ধারণ করা যায়। এগুলো সময় নির্ধারণ, ফরম্যাট এবং ট্র্যাকিংয়ের জন্য অত্যন্ত গুরুত্বপূর্ণ।

common.content_added_by

time.h হেডার ফাইল এবং এর ফাংশনসমূহ

199
199

time.h হেডার ফাইল এবং এর ফাংশনসমূহ

time.h হেডার ফাইলটি সি প্রোগ্রামিং ভাষায় সময় এবং তারিখ (Date and Time) সম্পর্কিত কাজের জন্য ব্যবহৃত হয়। এর মাধ্যমে প্রোগ্রামাররা বর্তমান সময় ও তারিখ নির্ধারণ, সময়ের হিসাব রাখা, এবং প্রোগ্রামিং কাজের টাইমিং পরিচালনা করতে পারেন।

এখানে time.h হেডার ফাইলের কিছু গুরুত্বপূর্ণ ফাংশন এবং তাদের ব্যাখ্যা দেওয়া হলো:


১. time() – বর্তমান সময় নির্ণয়

time() ফাংশনটি বর্তমান সময়কে time_t টাইপের একটি ভেরিয়েবলে রিটার্ন করে, যা UNIX epoch (1970 সালের 1 জানুয়ারি, 00:00:00 UTC) থেকে শুরু করে বর্তমান পর্যন্ত কতো সেকেন্ড পার হয়েছে তার মান প্রকাশ করে।

সিঙ্কট্যাক্স:

time_t time(time_t *seconds);

উদাহরণ:

#include <stdio.h>
#include <time.h>

int main() {
    time_t current_time;
    current_time = time(NULL);  // বর্তমান সময় গ্রহণ

    printf("Current time in seconds since Epoch: %ld\n", current_time);
    return 0;
}

২. clock() – প্রোগ্রাম চালানোর সময় নির্ধারণ

clock() ফাংশনটি প্রোগ্রাম চালু হওয়ার পর থেকে CPU-এর কতো সময় (clock ticks) অতিবাহিত হয়েছে, তা নির্ধারণ করে। এটি সাধারণত প্রোগ্রামের কার্যকারিতা বিশ্লেষণের জন্য ব্যবহৃত হয়।

সিঙ্কট্যাক্স:

clock_t clock(void);

উদাহরণ:

#include <stdio.h>
#include <time.h>

int main() {
    clock_t start, end;
    double cpu_time_used;

    start = clock();
    // কোড যা সময় নিতে পারে
    for (long i = 0; i < 1000000; i++);
    end = clock();

    cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;
    printf("CPU time used: %f seconds\n", cpu_time_used);
    return 0;
}

৩. difftime() – সময়ের পার্থক্য নির্ণয়

difftime() ফাংশনটি দুটি time_t টাইপের সময়ের মধ্যে পার্থক্য নির্ণয় করে এবং এটি সেকেন্ডে রিটার্ন করে।

সিঙ্কট্যাক্স:

double difftime(time_t end, time_t start);

উদাহরণ:

#include <stdio.h>
#include <time.h>

int main() {
    time_t start, end;

    start = time(NULL);
    // কিছু কাজ যা সময় নিতে পারে
    for (long i = 0; i < 1000000; i++);
    end = time(NULL);

    printf("Time difference: %.2f seconds\n", difftime(end, start));
    return 0;
}

৪. mktime() – গঠনমূলক সময়কে time_t টাইপে রূপান্তর করা

mktime() ফাংশনটি struct tm টাইপের একটি গঠনমূলক সময়কে time_t টাইপে রূপান্তর করে, যা epoch সময়ের সেকেন্ড রিটার্ন করে।

সিঙ্কট্যাক্স:

time_t mktime(struct tm *timeptr);

উদাহরণ:

#include <stdio.h>
#include <time.h>

int main() {
    struct tm timeinfo = {0};
    timeinfo.tm_year = 2023 - 1900;
    timeinfo.tm_mon = 11 - 1;
    timeinfo.tm_mday = 10;

    time_t timestamp = mktime(&timeinfo);
    printf("Timestamp for 2023-11-10: %ld\n", timestamp);
    return 0;
}

৫. asctime() – গঠনমূলক সময়কে পাঠযোগ্য স্ট্রিংয়ে রূপান্তর করা

asctime() ফাংশনটি struct tm টাইপের একটি গঠনমূলক সময়কে পাঠযোগ্য স্ট্রিংয়ে রূপান্তর করে। এটি সপ্তাহের দিন, মাস, দিন, সময় এবং বছর সহ স্ট্রিং রিটার্ন করে।

সিঙ্কট্যাক্স:

char *asctime(const struct tm *timeptr);

উদাহরণ:

#include <stdio.h>
#include <time.h>

int main() {
    time_t current_time = time(NULL);
    struct tm *timeinfo = localtime(¤t_time);

    printf("Current time: %s", asctime(timeinfo));
    return 0;
}

৬. ctime() – সময়কে পাঠযোগ্য স্ট্রিংয়ে রূপান্তর করা

ctime() ফাংশনটি time_t টাইপের সময়কে পাঠযোগ্য স্ট্রিংয়ে রূপান্তর করে। এটি asctime() এর মতোই কাজ করে, তবে time_t টাইপকে সরাসরি রূপান্তর করে।

সিঙ্কট্যাক্স:

char *ctime(const time_t *time);

উদাহরণ:

#include <stdio.h>
#include <time.h>

int main() {
    time_t current_time = time(NULL);

    printf("Current time: %s", ctime(¤t_time));
    return 0;
}

৭. strftime() – সময় এবং তারিখ ফরম্যাট করা

strftime() ফাংশনটি সময় এবং তারিখকে নির্দিষ্ট ফরম্যাটে রূপান্তর করতে ব্যবহৃত হয়।

সিঙ্কট্যাক্স:

size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr);

উদাহরণ:

#include <stdio.h>
#include <time.h>

int main() {
    time_t current_time = time(NULL);
    struct tm *timeinfo = localtime(¤t_time);

    char buffer[80];
    strftime(buffer, sizeof(buffer), "Date: %Y-%m-%d, Time: %H:%M:%S", timeinfo);

    printf("%s\n", buffer);
    return 0;
}

ফরম্যাট কোড:

  • %Y – পূর্ণ বছর (e.g., 2023)
  • %m – মাস (01-12)
  • %d – দিন (01-31)
  • %H – ঘন্টা (00-23)
  • %M – মিনিট (00-59)
  • %S – সেকেন্ড (00-59)

৮. localtime()time_t থেকে স্থানীয় সময়ে রূপান্তর করা

localtime() ফাংশনটি time_t টাইপের সময়কে স্থানীয় সময় অনুযায়ী struct tm টাইপে রূপান্তর করে।

সিঙ্কট্যাক্স:

struct tm *localtime(const time_t *time);

উদাহরণ:

#include <stdio.h>
#include <time.h>

int main() {
    time_t current_time = time(NULL);
    struct tm *timeinfo = localtime(¤t_time);

    printf("Year: %d\n", timeinfo->tm_year + 1900);
    printf("Month: %d\n", timeinfo->tm_mon + 1);
    printf("Day: %d\n", timeinfo->tm_mday);

    return 0;
}

৯. gmtime()time_t থেকে UTC সময়ে রূপান্তর করা

gmtime() ফাংশনটি time_t টাইপের সময়কে UTC (Coordinated Universal Time) সময় অনুযায়ী struct tm টাইপে রূপান্তর করে।

সিঙ্কট্যাক্স:

struct tm *gmtime(const time_t *time);

উদাহরণ:

#include <stdio.h>
#include <time.h>

int main() {
    time_t current_time = time(NULL);
    struct tm *timeinfo = gmtime(¤t_time);

    printf("UTC Year: %d\n", timeinfo->tm_year + 1900);
    printf("UTC Month: %d\n", timeinfo->tm_mon + 1);
    printf("UTC Day: %d\n", timeinfo->tm_mday);

    return 0;
}

সারসংক্ষেপ

ফাংশনকাজউদাহরণ
time()বর্তমান সময় নির্ণয়time_t current = time(NULL);
clock()প্রোগ্রাম চালানোর সময় নির্ধারণclock_t c = clock();
difftime()দুটি সময়ের মধ্যে পার্থক্য নির্ণয়difftime(end, start);
mktime()গঠনমূলক সময়কে time_t টাইপে রূপান্তরmktime(&timeinfo);
asctime()গঠনমূলক সময়কে পাঠযোগ্য স্ট্রিংয়ে রূপান্তরasctime(&timeinfo);
ctime()time_t টাইপকে পাঠযোগ্য স্ট্রিংয়ে রূপান্তরctime(¤t);
strftime()সময় এবং তারিখ ফরম্যাট করাstrftime(buffer, size, format, &time);
localtime()time_t থেকে স্থানীয় সময়ে রূপান্তরlocaltime(¤t);
gmtime()time_t থেকে UTC সময়ে রূপান্তরgmtime(¤t);

time.h হেডার ফাইলটি সি প্রোগ্রামিংয়ে সময় এবং তারিখ সম্পর্কিত কাজগুলো সহজে সম্পন্ন করার জন্য গুরুত্বপূর্ণ। এর মাধ্যমে বর্তমান সময়, তারিখ নির্ধারণ এবং সময়ের পার্থক্য মাপা সহ আরও অনেক কার্যকর কাজ করা যায়।

common.content_added_by

time(), clock(), difftime() এর মাধ্যমে সময় মাপা

205
205

time(), clock(), এবং difftime() এর মাধ্যমে সময় মাপা

সি প্রোগ্রামিং ভাষায় সময় মাপার জন্য time.h হেডার ফাইলটি ব্যবহৃত হয়। সময় মাপার জন্য সি ভাষায় বিভিন্ন ফাংশন রয়েছে, যেমন time(), clock(), এবং **difftime()**। এই ফাংশনগুলো সময়ের সাথে সম্পর্কিত বিভিন্ন কার্যক্রম যেমন সিস্টেম সময় বা প্রোগ্রামের রানটাইম পরিমাপ করতে ব্যবহৃত হয়। প্রতিটি ফাংশনই নির্দিষ্ট কাজের জন্য উপযোগী, এবং তাদের ব্যবহার সময় ব্যবস্থাপনা ও অপটিমাইজেশনের ক্ষেত্রে অত্যন্ত গুরুত্বপূর্ণ।

নিচে এই ফাংশনগুলোর ব্যবহার এবং কার্যকারিতা বিস্তারিতভাবে আলোচনা করা হলো।


১. time() – সিস্টেম টাইম

time() ফাংশনটি সিস্টেমের বর্তমান সময়কে ইউনিকোড টাইম স্ট্যাম্প (সময় গণনা সেকেন্ডে) হিসেবে রিটার্ন করে। এটি সাধারণত সিস্টেমের বর্তমান সময় মাপার জন্য ব্যবহৃত হয় এবং এটি প্রাথমিক সময়ের (epoch) থেকে সেকেন্ডের সংখ্যা রিটার্ন করে, যেটি 1970 সালের জানুয়ারি 1 তারিখ 00:00:00 UTC (Coordinated Universal Time) থেকে গণনা করা হয়।

সিঙ্কট্যাক্স:

time_t time(time_t *t);
  • t – যদি পয়েন্টার দেওয়া হয়, তাহলে এটি প্রাপ্ত সময়ে স্টোর করা হয়। এটি ঐচ্ছিক, তাই time(NULL) লিখেও ফাংশনটি ব্যবহার করা যেতে পারে।

উদাহরণ:

#include <stdio.h>
#include <time.h>

int main() {
    time_t current_time;
    current_time = time(NULL);  // বর্তমান সিস্টেম টাইম পাওয়া

    if (current_time == ((time_t)-1)) {
        printf("Error getting the time.\n");
        return 1;
    }

    printf("Current time: %ld seconds since the Epoch\n", current_time);
    return 0;
}

এখানে time(NULL) ফাংশনটি বর্তমান সময় (epoch থেকে সেকেন্ডে) রিটার্ন করেছে এবং এটি current_time ভেরিয়েবলে সংরক্ষিত হয়েছে।


২. clock() – প্রোগ্রামের রানটাইম

clock() ফাংশনটি প্রোগ্রামের রানটাইম পরিমাপ করতে ব্যবহৃত হয়। এটি CPU টাইম (সর্বমোট CPU ব্যবহার সময়) রিটার্ন করে, যা সেকেন্ডে পরিমাপ করা হয়। তবে, এটি সিস্টেম সময় নয়; এটি শুধুমাত্র প্রোগ্রামের CPU ব্যবহারকে হিসাব করে। তাই, যদি প্রোগ্রামটি অন্য কোনো প্রক্রিয়া বা থ্রেড দ্বারা ব্যস্ত না থাকে, তবে এটি একটি নির্ভুল সময় পরিমাপ করবে।

সিঙ্কট্যাক্স:

clock_t clock(void);
  • clock_t টাইপটি ফাংশনটির রিটার্ন টাইপ যা সিস্টেমের ব্যবহৃত CPU সময়ের মোট মান।

উদাহরণ:

#include <stdio.h>
#include <time.h>

int main() {
    clock_t start_time, end_time;
    double time_taken;

    start_time = clock();  // প্রোগ্রাম শুরু হওয়ার সময়

    // কিছু কোড যা সময় নেবে
    for (long i = 0; i < 1000000; i++) {
        // উদ্দেশ্যহীন কাজ
    }

    end_time = clock();  // প্রোগ্রাম শেষ হওয়ার সময়

    time_taken = ((double)(end_time - start_time)) / CLOCKS_PER_SEC;  // CPU সময় সেকেন্ডে পরিণত করা

    printf("Time taken: %f seconds\n", time_taken);
    return 0;
}

এখানে clock() ফাংশনটি প্রোগ্রামের CPU সময় গণনা করেছে এবং CLOCKS_PER_SEC দ্বারা এটি সেকেন্ডে রূপান্তরিত হয়েছে।


৩. difftime() – দুটি সময়ের মধ্যে পার্থক্য

difftime() ফাংশনটি দুটি সময়ের মধ্যে পার্থক্য নির্ধারণ করতে ব্যবহৃত হয়। এটি সাধারণত time() ফাংশন থেকে প্রাপ্ত সময়ের মধ্যে পার্থক্য বের করার জন্য ব্যবহৃত হয়, এবং এটি সেকেন্ডে পার্থক্য রিটার্ন করে। এটি একটি প্রক্রিয়া বা ইভেন্টের সময়কাল পরিমাপ করতে সহায়ক।

সিঙ্কট্যাক্স:

double difftime(time_t time1, time_t time2);
  • time1 এবং time2 হল দুটি time_t টাইপের সময় মান, যেগুলোর মধ্যে পার্থক্য নির্ধারণ করা হবে।
  • এটি সেকেন্ডে সময়ের পার্থক্য রিটার্ন করে।

উদাহরণ:

#include <stdio.h>
#include <time.h>

int main() {
    time_t start_time, end_time;

    start_time = time(NULL);  // শুরু সময়

    // কিছু বিলম্ব
    for (long i = 0; i < 10000000; i++);

    end_time = time(NULL);  // শেষ সময়

    double elapsed_time = difftime(end_time, start_time);  // সময়ের পার্থক্য নির্ধারণ

    printf("Elapsed time: %.2f seconds\n", elapsed_time);
    return 0;
}

এখানে difftime() ফাংশনটি শুরু এবং শেষ সময়ের মধ্যে পার্থক্য নির্ধারণ করেছে এবং সেকেন্ডে ফলাফল প্রদর্শন করেছে।


সারসংক্ষেপ

ফাংশনকাজসিঙ্কট্যাক্স
time()সিস্টেমের বর্তমান সময় পাওয়াtime_t time(time_t *t);
clock()প্রোগ্রামের CPU ব্যবহৃত সময় পরিমাপ করাclock_t clock(void);
difftime()দুটি সময়ের মধ্যে পার্থক্য নির্ধারণdouble difftime(time_t time1, time_t time2);

এই ফাংশনগুলো time.h হেডার ফাইলের অংশ এবং সি প্রোগ্রামে সময় সম্পর্কিত কার্যক্রমের জন্য অপরিহার্য। time() সিস্টেম সময়, clock() প্রোগ্রামের CPU সময়, এবং difftime() দুটি সময়ের মধ্যে পার্থক্য নির্ধারণ করতে ব্যবহৃত হয়।

common.content_added_by

strftime() এর মাধ্যমে সময় ফরম্যাট করা

225
225

strftime() এর মাধ্যমে সময় ফরম্যাট করা

সি প্রোগ্রামিং ভাষায় strftime() ফাংশনটি ব্যবহৃত হয় সময় এবং তারিখকে একটি নির্দিষ্ট ফরম্যাটে রূপান্তর করার জন্য। এটি time.h হেডার ফাইলের অন্তর্গত এবং এটি ব্যবহারকারীর জন্য সময় এবং তারিখের আউটপুট কাস্টমাইজ করতে সহায়ক।

strftime() ফাংশনটি একটি struct tm (যা সময় সম্পর্কিত বিভিন্ন মান ধারণ করে) ব্যবহার করে, এবং আপনি নির্দিষ্ট ফরম্যাট স্ট্রিং দিয়ে আউটপুট নিয়ন্ত্রণ করতে পারেন।

সিঙ্কট্যাক্স:

size_t strftime(char *str, size_t size, const char *format, const struct tm *tm);
  • str: এটি সেই বাফার যেখানে ফরম্যাট করা সময় স্টোর হবে।
  • size: বাফারের আকার (বাফারটি কতটা বড় হতে হবে)।
  • format: ফরম্যাট স্ট্রিং, যা সময় কিভাবে প্রদর্শিত হবে তা নির্ধারণ করে।
  • tm: এটি একটি struct tm টাইপের পয়েন্টার যা সময়ের মান ধারণ করে।

strftime() এর ফরম্যাট স্ট্রিং

ফরম্যাট স্ট্রিংয়ের মধ্যে বিভিন্ন কেস-পদ্বতির জন্য নির্দিষ্ট চরিত্র ব্যবহার করা হয়। কিছু সাধারণ ফরম্যাটের চরিত্র নিচে দেওয়া হলো:

ফরম্যাট চরিত্রবর্ণনা
%Yপূর্ণ বছর (চার অঙ্কের)
%mমাস (01-12)
%dমাসের দিন (01-31)
%Hঘণ্টা (00-23)
%Mমিনিট (00-59)
%Sসেকেন্ড (00-59)
%Iঘণ্টা (12-ঘণ্টার পদ্ধতিতে, 01-12)
%pAM/PM
%Aপূর্ণ সপ্তাহের দিন (Monday, etc.)
%aসংক্ষিপ্ত সপ্তাহের দিন (Mon, etc.)
%Bপূর্ণ মাস (January, etc.)
%bসংক্ষিপ্ত মাস (Jan, Feb, etc.)

উদাহরণ: strftime() ব্যবহার

#include <stdio.h>
#include <time.h>

int main() {
    time_t t;
    struct tm *tm_info;
    char buffer[80];

    // বর্তমান সময় পাওয়া
    time(&t);
    tm_info = localtime(&t);

    // সময় ফরম্যাট করা
    strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", tm_info);

    // ফরম্যাট করা সময় প্রদর্শন
    printf("Formatted time: %s\n", buffer);

    return 0;
}

ব্যাখ্যা:

  • time(&t): এটি বর্তমান সময় (Unix টাইমস্ট্যাম্প) সংগ্রহ করে।
  • localtime(&t): এটি struct tm টাইপের পয়েন্টারে স্থানীয় সময় ধারণ করে।
  • strftime(): এটি buffer তে ফরম্যাট করা সময় লিখে। ফরম্যাট স্ট্রিং "%Y-%m-%d %H:%M:%S" ব্যবহার করা হয়েছে, যা আউটপুটকে বছরের-মাসের-দিনের ঘণ্টা:মিনিট:সেকেন্ড ফরম্যাটে রূপান্তরিত করবে।

আউটপুট:

Formatted time: 2024-11-10 14:25:39

এখানে, strftime() ফাংশনটি বর্তমান সময়কে "%Y-%m-%d %H:%M:%S" ফরম্যাটে রূপান্তর করেছে।


strftime() ব্যবহার করতে কিছু সাধারণ কেস:

  1. তারিখ এবং সময়ের পূর্ণ ফরম্যাট:

    strftime(buffer, sizeof(buffer), "%A, %B %d, %Y %H:%M:%S", tm_info);
    printf("Full date and time: %s\n", buffer);

    আউটপুট:

    Full date and time: Sunday, November 10, 2024 14:25:39
  2. শুধুমাত্র সময় (ঘণ্টা:মিনিট:সেকেন্ড):

    strftime(buffer, sizeof(buffer), "%H:%M:%S", tm_info);
    printf("Time: %s\n", buffer);

    আউটপুট:

    Time: 14:25:39
  3. শুধুমাত্র তারিখ (বছর-মাস-দিন):

    strftime(buffer, sizeof(buffer), "%Y-%m-%d", tm_info);
    printf("Date: %s\n", buffer);

    আউটপুট:

    Date: 2024-11-10

সারসংক্ষেপ

  • strftime() ফাংশনটি সি প্রোগ্রামে সময় এবং তারিখকে নির্দিষ্ট ফরম্যাটে রূপান্তর করতে ব্যবহৃত হয়।
  • এটি struct tm টাইপের পয়েন্টারের মাধ্যমে স্থানীয় সময়ের মান গ্রহণ করে এবং তা একটি স্ট্রিংয়ে রূপান্তর করে।
  • ফরম্যাট স্ট্রিংয়ের মাধ্যমে আপনি সময় এবং তারিখের আউটপুট কাস্টমাইজ করতে পারেন, যেমন %Y (বছর), %m (মাস), %d (দিন), %H (ঘণ্টা), %M (মিনিট), %S (সেকেন্ড) ইত্যাদি।

strftime() ফাংশনটি সময় এবং তারিখের বিভিন্ন ফরম্যাটে আউটপুট প্রদানের জন্য অত্যন্ত কার্যকরী এবং এটি বিশেষভাবে লগ ফাইল তৈরি, সময় নির্ধারণ, অথবা ইউজার ইন্টারফেসে সময় প্রদর্শনের জন্য ব্যবহৃত হয়।

common.content_added_by

localtime(), gmtime() এবং টাইম জোন হ্যান্ডলিং

230
230

localtime(), gmtime() এবং টাইম জোন হ্যান্ডলিং

সি প্রোগ্রামিং ভাষায় টাইম জোন হ্যান্ডলিং এবং টাইম সম্পর্কিত অপারেশন করার জন্য time.h হেডার ফাইলটি ব্যবহৃত হয়। এই হেডার ফাইলটি বিভিন্ন টাইম ফাংশন সরবরাহ করে, যার মাধ্যমে আপনি বর্তমান সময় বের করতে, টাইম জোন সম্পর্কিত কাজ করতে এবং সময়ের সঙ্গে সম্পর্কিত অপারেশন করতে পারেন। localtime() এবং gmtime() ফাংশন দুটি প্রধান ফাংশন যা টাইম সম্পর্কিত কাজ করার জন্য ব্যবহৃত হয়।

এখানে localtime(), gmtime() এবং টাইম জোন হ্যান্ডলিং সম্পর্কিত বিস্তারিত আলোচনা করা হয়েছে।


১. localtime() – লোকাল টাইমে সময় রূপান্তর

localtime() ফাংশনটি একটি time_t টাইপের মান গ্রহণ করে এবং তা লোকাল টাইম (অর্থাৎ, আপনার সিস্টেমের টাইম জোন অনুযায়ী) অনুযায়ী রূপান্তরিত করে। এটি struct tm টাইপের একটি পয়েন্টার রিটার্ন করে, যা সিস্টেমের লোকাল টাইমের বিস্তারিত তথ্য ধারণ করে।

সিঙ্কট্যাক্স:

struct tm *localtime(const time_t *time);

উদাহরণ:

#include <stdio.h>
#include <time.h>

int main() {
    time_t rawtime;
    struct tm *timeinfo;

    time(&rawtime);  // বর্তমান সময় সংগ্রহ
    timeinfo = localtime(&rawtime);  // লোকাল টাইমে রূপান্তর

    printf("Local time and date: %s", asctime(timeinfo));  // লোকাল সময় প্রদর্শন

    return 0;
}

এখানে localtime() ফাংশনটি বর্তমান সময়কে সিস্টেমের লোকাল টাইমে রূপান্তর করেছে এবং asctime() ফাংশনটি সেই টাইমের একটি ফরম্যাটেড আউটপুট প্রদর্শন করেছে।


২. gmtime() – গ্রিনউইচ মীন টাইম (GMT) বা ইউটিসি (UTC)

gmtime() ফাংশনটি time_t টাইপের একটি মান গ্রহণ করে এবং তা গ্রিনউইচ মীন টাইম (GMT) বা কোঅর্ডিনেটেড ইউনিভার্সাল টাইম (UTC) এ রূপান্তরিত করে। এটি struct tm টাইপের একটি পয়েন্টার রিটার্ন করে, যা GMT বা UTC এর তথ্য ধারণ করে।

সিঙ্কট্যাক্স:

struct tm *gmtime(const time_t *time);

উদাহরণ:

#include <stdio.h>
#include <time.h>

int main() {
    time_t rawtime;
    struct tm *timeinfo;

    time(&rawtime);  // বর্তমান সময় সংগ্রহ
    timeinfo = gmtime(&rawtime);  // UTC বা GMT সময়ে রূপান্তর

    printf("UTC time and date: %s", asctime(timeinfo));  // UTC সময় প্রদর্শন

    return 0;
}

এখানে gmtime() ফাংশনটি বর্তমান সময়কে UTC (গ্রিনউইচ মীন টাইম) এ রূপান্তর করেছে এবং asctime() ফাংশনটি সেই সময়ের একটি ফরম্যাটেড আউটপুট প্রদর্শন করেছে।


৩. টাইম জোন হ্যান্ডলিং

টাইম জোন সম্পর্কিত কিছু ফাংশন সি প্রোগ্রামে time.h হেডার ফাইলে পাওয়া যায়। সিস্টেমের টাইম জোন এবং সময়ের সঠিক হিসাব করার জন্য timezone, tzset(), এবং strftime() ফাংশনগুলো ব্যবহৃত হয়।

timezone এবং tzset()

timezone একটি গ্লোবাল ভ্যারিয়েবল যা সিস্টেমের লোকাল টাইম জোনের ব্যবধান (ডিফারেন্স) দেখায় GMT এর সাথে। tzset() ফাংশনটি টাইম জোনের তথ্য আপডেট করে, যা টাইম জোন সম্পর্কিত অন্যান্য ফাংশনগুলোকে সঠিকভাবে কাজ করতে সাহায্য করে।

উদাহরণ:

#include <stdio.h>
#include <time.h>

int main() {
    time_t rawtime;
    struct tm *timeinfo;

    time(&rawtime);  // বর্তমান সময় সংগ্রহ
    tzset();  // টাইম জোন সেট আপডেট করা

    timeinfo = localtime(&rawtime);  // লোকাল টাইমে রূপান্তর

    printf("Local time: %s", asctime(timeinfo));
    printf("Timezone offset: %ld seconds\n", timezone);  // টাইম জোনের ডিফারেন্স প্রদর্শন

    return 0;
}

এখানে timezone গ্লোবাল ভ্যারিয়েবলটি ব্যবহার করা হয়েছে টাইম জোনের ডিফারেন্স প্রদর্শনের জন্য।


৪. strftime() – সময় ফরম্যাটে রূপান্তর

strftime() ফাংশনটি একটি struct tm টাইপের সময়কে একটি স্ট্রিংয়ের ফরম্যাটে রূপান্তর করতে ব্যবহৃত হয়। এটি সময় এবং তারিখের আউটপুটকে বিশেষ ফরম্যাটে প্রিন্ট করতে ব্যবহৃত হয়।

সিঙ্কট্যাক্স:

size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr);
  • str – যেখানে ফরম্যাটেড সময় রাখা হবে।
  • maxsize – স্ট্রিংটির আকার।
  • format – সময়ের ফরম্যাট।
  • timeptrstruct tm টাইপের টাইম পয়েন্টার।

উদাহরণ:

#include <stdio.h>
#include <time.h>

int main() {
    time_t rawtime;
    struct tm *timeinfo;
    char buffer[80];

    time(&rawtime);  // বর্তমান সময় সংগ্রহ
    timeinfo = localtime(&rawtime);  // লোকাল টাইমে রূপান্তর

    // সময়ের ফরম্যাট নির্ধারণ করা
    strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", timeinfo);

    printf("Formatted time: %s\n", buffer);  // ফরম্যাটে রূপান্তরিত সময় প্রদর্শন

    return 0;
}

এখানে strftime() ফাংশনটি বর্তমান সময়কে একটি নির্দিষ্ট ফরম্যাটে রূপান্তর করেছে, যেমন: "YYYY-MM-DD HH:MM:SS"


সারসংক্ষেপ

ফাংশনকাজ
localtime()UTC সময়কে লোকাল টাইমে রূপান্তরিত করে
gmtime()লোকাল সময়কে UTC (GMT) সময়ে রূপান্তরিত করে
timezoneসিস্টেমের লোকাল টাইম জোনের ডিফারেন্স দেখায়
tzset()টাইম জোন সম্পর্কিত তথ্য আপডেট করে
strftime()struct tm টাইপের সময়কে একটি নির্দিষ্ট ফরম্যাটে রূপান্তর করে

localtime() এবং gmtime() ফাংশনগুলি সময়ের লোকাল টাইম এবং UTC সময়ে রূপান্তরের জন্য ব্যবহৃত হয়, যা বিভিন্ন সময় অঞ্চল সম্পর্কিত কাজের জন্য অত্যন্ত গুরুত্বপূর্ণ। strftime() ফাংশনটি সময়কে একটি ফরম্যাটে রূপান্তর করতে ব্যবহৃত হয়, যা ব্যবহারকারীর ইন্টারফেসে প্রয়োজনীয় আউটপুট প্রদান করতে সহায়ক।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion